{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Shower Fuzzy Inference System\n", "\n", "\n", "### Importing matlab file project" ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [], "source": [ "import FuzzySystem as fs\n", "\n", "file = './shower.fis'\n", "\n", "fis = fs.import_fis_matlab(file)" ] }, { "cell_type": "markdown", "source": [ "### File Content" ], "metadata": { "collapsed": false, "pycharm": { "name": "#%% md\n" } } }, { "cell_type": "code", "execution_count": 2, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "[System]\n", "Name='shower'\n", "Type='mamdani'\n", "Version=2.0\n", "NumInputs=2\n", "NumOutputs=2\n", "NumRules=9\n", "AndMethod='min'\n", "OrMethod='max'\n", "ImpMethod='min'\n", "AggMethod='max'\n", "DefuzzMethod='centroid'\n", "\n", "[Input1]\n", "Name='temp'\n", "Range=[-20 20]\n", "NumMFs=3\n", "MF1='cold':'trapmf',[-30 -30 -15 0]\n", "MF2='good':'trimf',[-10 0 10 0]\n", "MF3='hot':'trapmf',[0 15 30 30]\n", "\n", "[Input2]\n", "Name='flow'\n", "Range=[-1 1]\n", "NumMFs=3\n", "MF1='soft':'trapmf',[-3 -3 -0.8 0]\n", "MF2='good':'trimf',[-0.4 0 0.4 0]\n", "MF3='hard':'trapmf',[0 0.8 3 3]\n", "\n", "[Output1]\n", "Name='cold'\n", "Range=[-1 1]\n", "NumMFs=5\n", "MF1='closeFast':'trimf',[-1 -0.6 -0.3 0]\n", "MF2='closeSlow':'trimf',[-0.6 -0.3 0 0]\n", "MF3='steady':'trimf',[-0.3 0 0.3 0]\n", "MF4='openSlow':'trimf',[0 0.3 0.6 0]\n", "MF5='openFast':'trimf',[0.3 0.6 1 0]\n", "\n", "[Output2]\n", "Name='hot'\n", "Range=[-1 1]\n", "NumMFs=5\n", "MF1='closeFast':'trimf',[-1 -0.6 -0.3 0]\n", "MF2='closeSlow':'trimf',[-0.6 -0.3 0 0]\n", "MF3='steady':'trimf',[-0.3 0 0.3 0]\n", "MF4='openSlow':'trimf',[0 0.3 0.6 0]\n", "MF5='openFast':'trimf',[0.3 0.6 1 0]\n", "\n", "[Rules]\n", "1 1, 4 5 (1) : 1\n", "1 2, 2 4 (1) : 1\n", "1 3, 1 2 (1) : 1\n", "2 1, 4 4 (1) : 1\n", "2 2, 3 3 (1) : 1\n", "2 3, 2 2 (1) : 1\n", "3 1, 5 4 (1) : 1\n", "3 2, 4 2 (1) : 1\n", "3 3, 2 1 (1) : 1\n", "\n" ] } ], "source": [ "text_file = open(file)\n", "file_content = text_file.read()\n", "print(file_content)\n", "text_file.close()" ], "metadata": { "collapsed": false, "pycharm": { "name": "#%%\n" } } }, { "cell_type": "markdown", "source": [ "### Fuzzy Rules" ], "metadata": { "collapsed": false, "pycharm": { "name": "#%% md\n" } } }, { "cell_type": "code", "execution_count": 3, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "\n", "Fuzzy System Rules:\n", "IF temp is cold and flow is soft THEN cold is openSlow and hot is openFast\n", "IF temp is cold and flow is good THEN cold is closeSlow and hot is openSlow\n", "IF temp is cold and flow is hard THEN cold is closeFast and hot is closeSlow\n", "IF temp is good and flow is soft THEN cold is openSlow and hot is openSlow\n", "IF temp is good and flow is good THEN cold is steady and hot is steady\n", "IF temp is good and flow is hard THEN cold is closeSlow and hot is closeSlow\n", "IF temp is hot and flow is soft THEN cold is openFast and hot is openSlow\n", "IF temp is hot and flow is good THEN cold is openSlow and hot is closeSlow\n", "IF temp is hot and flow is hard THEN cold is closeSlow and hot is closeFast\n" ] } ], "source": [ "fis.show_rules()" ], "metadata": { "collapsed": false, "pycharm": { "name": "#%%\n" } } }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Inputs:\n", "temp: [12.05, 12]\n", "flow: [0.1687, 0.1]\n", " IF temp is cold and flow is soft THEN cold is openSlow and hot is openFast, fs = [0 0] with weight = 1.00\n", " IF temp is cold and flow is good THEN cold is closeSlow and hot is openSlow, fs = [0. 0.] with weight = 1.00\n", " IF temp is cold and flow is hard THEN cold is closeFast and hot is closeSlow, fs = [0. 0.] with weight = 1.00\n", " IF temp is good and flow is soft THEN cold is openSlow and hot is openSlow, fs = [0. 0.] with weight = 1.00\n", " IF temp is good and flow is good THEN cold is steady and hot is steady, fs = [0. 0.] with weight = 1.00\n", " IF temp is good and flow is hard THEN cold is closeSlow and hot is closeSlow, fs = [0. 0.] with weight = 1.00\n", " IF temp is hot and flow is soft THEN cold is openFast and hot is openSlow, fs = [0. 0.] with weight = 1.00\n", " IF temp is hot and flow is good THEN cold is openSlow and hot is closeSlow, fs = [0.58 0.75] with weight = 1.00\n", " IF temp is hot and flow is hard THEN cold is closeSlow and hot is closeFast, fs = [0.21 0.12] with weight = 1.00\n" ] } ], "source": [ "inputs = {'temp':[12.05, 12], 'flow':[0.1687, .1]}\n", "result = fis.eval(inputs, verbose=True)" ] }, { "cell_type": "markdown", "source": [ "### Output" ], "metadata": { "collapsed": false, "pycharm": { "name": "#%% md\n" } } }, { "cell_type": "code", "execution_count": 5, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Centroid=0.111\n", "Centroid=-0.416\n" ] }, { "data": { "text/plain": "
", "image/png": "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f43Vv2nr1q20t7ezZcsWdu/ezZlnnsnTTz894jWXLFnC3XffzV/8xV+UDJ8+fTrXXnstmzdvZvPm0kOuK1as4Morr2ThwoV111eJmpJEUm4iG62o5fP5uud98MEHOeigg1i9evXwsKVLl3LGGWdw/fXX8+53v5uTTjqJv//7vwdg586dnHDCCfz5n/85ixcv5qyzzqKnp4c777yTjRs3cvHFF7N06VJ6enqYP38+n//85zn99NP5zne+wx133MGJJ57IkiVLuPrqq4dfb/78+bzySnBvpS984Qscf/zxnHnmmTz11FNVv4/vfe97XHjhhUybNo0FCxZw7LHH8uijj46Y7oQTTuD4448fMXzGjBmcfvrpTJ8+fcS4ZcuWceSR5bchnzjtMYikXBzBsPSLYzc71WvnFz806rjNmzdzyimnjBj+wAMPsH37dh599FHcnXPPPZeHHnqIefPmsX37du644w5uvfVWPvrRj3LXXXfx8Y9/nJtvvpkbbrhhuHkGgl/iP/vZz9i9ezennXYamzZt4q1vfStnnXUW3/3ud/nwhz88PO1jjz1Ge3s7jz32GAMDA5x88snDtV1//fV861vfGlHn+973Pm666SZ27drFaaedNjy8paWFXbt21bO6YqNgEEm5JO8xROGBBx7ggQce4F3vehcQdAuxfft25s2bx4IFC1i6dCkAp5xyCjt37hx1ORdccAEAGzZsoK2tjbe9Leho9OKLL+ahhx4qCYaHH36Y8847j0MOOQSAc889d3jcVVddxVVXXTXq63iFboeSfraXgkEk5eIIhseveW/d886cOZMpU2rf1CxevJg777xzxHB357Of/eyItvidO3cybdq04eeTJ0+mp6dn1OUPdVddacNdyWgb8/H2GFpaWnj++eeHh3d2dtZ8EDxuOsYgknLd3d2NLmFM9R5n+MAHPkBfXx+33nrr8LANGzZw6KGHcttttw2fhbNr1y5efnnsjphnzZo1aoCeeuqp/PSnP+WVV15hcHCQO+64g/e/v/Q2MO9973u555576OnpYf/+/fznf/7n8LirrrqKxx9/fMTfTTfdBAR7F+3t7fT19fGb3/yG7du3s2zZsrrWSVwUDCIp5u5NGwxmxj333MOPfvQjjjnmGBYvXsyaNWu46KKLuOiii3jPe97DiSeeyPnnnz/uXtOll17K6tWrhw8+Fzvy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\n" }, "metadata": { "needs_background": "light" }, "output_type": "display_data" }, { "data": { "text/plain": "
", "image/png": "iVBORw0KGgoAAAANSUhEUgAAAYYAAAEICAYAAABbOlNNAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjMuNCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8QVMy6AAAACXBIWXMAAAsTAAALEwEAmpwYAAAmo0lEQVR4nO3de5gU9Z3v8fd3kIt4DyqiqLAJUcALgRE1GgVJvJ6V+MSs18Qkqyx7YjaefeKKz+6TeDa7q8a9RFezrGZN3BOV3NSwBFc8WUcTo+uAEgNyFKK4jhhUzArDXHvme/7oGuhpume6erqqu6o+r+eZh+66fru6qU/Xr6p/Ze6OiIjIgKZ6FyAiIo1FwSAiIoMoGEREZBAFg4iIDKJgEBGRQRQMIiIySKzBYGbnmtnLZrbJzJaUmWaema01s/Vm9mSc9YmICFhcv2Mws1HAK8AngDagFbjM3V8qmOZA4JfAue7+X2Z2qLu/PdRyDz74YJ8yZUpVNe3cuZN99tmnqnmj1Kh1Qbjafv3m+wAcf8QBUZYENO42U13hqK5wRlLXmjVr3nX3Q0qOdPdY/oBTgccKnt8I3Fg0zf8E/irMcufMmePVeuKJJ6qeN0qNWpd7uNqOvmGFH33DiuiKKdCo20x1haO6whlJXcBqL7NfjbMp6QjgjYLnbcGwQh8GDjKzFjNbY2afja06EREB4m1K+jRwjrtfHTz/DDDX3b9UMM2dQDOwANgbeAa4wN1fKVrWImARwMSJE+csW7asqpra29vZd999q5o3So1aF4Sr7XP/vhOA754b/SF4o24z1RWO6gpnJHXNnz9/jbs3lxxZ7lCi1n9U1pS0BLip4Pm/AJ8earlqSoqXmpLCUV3hqK5wompK2quqqKlOKzDNzKYCbwKXApcXTfMT4E4z2wsYA5wM/EOMNYpkVm9vL21tbXR1ddWthgMOOIANGzbUbf3lJLmucePGMXnyZEaPHl3xcmMLBnfPmdm1wGPAKOBed19vZouD8UvdfYOZ/TvwItAPfNvd18VVo0iWtbW1sd9++zFlyhTMrC417Nixg/32268u6x5KUutyd7Zt20ZbWxtTp06teLlxHjHg7iuBlUXDlhY9vw24Lc66RAS6urrqGgpSe2bGhAkTeOedd0LNp18+i8guCoX0qeY9VTCIiMggsTYlSXa0t7fvevz0009Hvr6dO3dWvJ65c+eGOhEn8dm6dSvXXHMNra2tjB07lilTpvDNb36TD3/4w6GW893vfpezzz6bww8/PNR8559/Pg888AAHHnjgoOF/8zd/w4QJE/jKV74SankA7733HpdccgmbN29mypQp/OAHP+Cggw4qOW1fXx/Nzc0cccQRrFixAoAf/vCH3HTTTWzYsIHnnnuO5ubdV5iuW7eOP/3TP2X79u00NTXR2trKuHHjQtdYTMEgkdiyZcuux++9917k6+vv7694Pe3t7WX/Y0r9uDuXX345X/jCFxj4bdLatWvZunVrVcFw3HHHlQyGvr4+Ro0aVXK+lStXlhw+ErfccgsLFixgyZIl3HLLLdxyyy3ceuutJae9/fbbmT59Otu3b9817LjjjuOhhx7ij/7ojwZNm8vluOaaa7j//vs58cQT2bZtW82+8KgpSSLR0dFR7xLKKvxPJ43jiSeeYPTo0SxevHjXsFmzZvGxj32M2267jZNOOokTTjiBr33tawBs3ryZ6dOnc8011zBz5kzOPvtsOjs7+dGPfsTq1au54oormDVrFp2dnUyZMoW//Mu/5PTTT+eHP/whDz74IMcffzzHHXccN9xww671TZkyhXfffReAv/7rv+aYY47h4x//OBs3bqz6df3kJz/hqquuAuCqq67ikUceKTldW1sbP/3pT7n66qsHDZ8+fTrHHHPMHtOvWrWKmTNncuKJJwIwYcKEsoEXlo4YJBKNHAw7duyodwkNb8qSn0ay3M23XFB23Lp165g1a9Yew1etWsXGjRt57rnncHcuvPBCnnrqKY466ig2btzIgw8+yD333MMf/MEf8OMf/5grr7ySO++8k7/9278d1Owybtw4fvGLX7BlyxZOOeUU1qxZw0EHHcTZZ5/NI488wic/+cld065Zs4Zly5bxwgsvkMvlmDVrFqeccgoAt912G/fff/8edZ5xxhnccccdewzfunUrkyZNAmDSpEm8/XbpfkGvu+46vvGNb1T8+XzllVcwM8455xzeeecdLr30Uv7sz/6sonmHo2CQSCgYpFZWrVrFqlWr+MhHPgLkmwI3btzIUUcdxdSpU3eFyZw5c9i8eXPZ5VxyySUAtLa2Mm/ePA45JN+x6BVXXMFTTz01KBh+/vOfc9FFFzF+/Hggf+5hwPXXX8/1119fw1cIK1as4NBDD2XOnDm0tLRUNE8ul+PZZ59l9erVjB8/ngULFjBnzhwWLFgw4noUDFJzfX19dHZ20qgtlQqG4Q31zT4qM2fO5Pvf//4ew92dG2+8cY829s2bNzN27Nhdz0eNGhV87kob6J7aK+wfrtxlnsMdMXz+85/nhRde4PDDD2flypVMnDiRt956i0mTJvHWW29x6KGH7jHv008/zfLly1m5ciVdXV1s376dK6+8ku9973tl65s8eTKnnXYaBx98MJAPr+eff74mwdCY/3Ml0Yb6z9kIuru7yeVy9S5Dipx11ll0d3dzzz337BrW2trK/vvvz7333rvrSrc333yzbHPMgP3226/sF4CTTz6ZJ598knfffZe+vj4efPBBzjzzzEHTnHHGGTz88MN0dnayY8cOHn300V3jrr/+etauXbvH30Az0ne+8x3Wrl2760T2hRdeyH333QfAfffdx8KFC/eo6eabb6atrY3NmzezbNkyzjrrrCFDAeCcc85h/fr1dHR0kMvlePLJJ5kxY8aQ81RKwSA118jNSAOSUGPWmBkPPPAAjz/+OB/84AeZOXMmN910E5dffjmXX345p556KscffzwXX3zxsEd9n/vc51i8ePGuk8+FJk2axM0338z8+fM58cQTmT179h4769mzZ3PJJZcwa9YsPvWpT/HRj3606te1ZMkSHn/8caZNm8bjjz/OkiX5m1du2bJlUBNVOQ8//DCTJ0/mmWee4YILLuCcc84B4KCDDuKLX/wiJ510ErNmzWL27NlccEFtjvRi63Y7Ks3Nzb569eqq5m1paWHevHm1LagGGrUuqKy21157jXXr1vGlp/PfO/7xtP7I6+rv76epqfLvOSeddBKHHXZYhBXlNep7WaquDRs2MH369PoUFEhqn0T1Umldpd5bMyvb7baOGKTmkvBtPAk1itSLgkFqLgk73Z07d9a7BJGGpWCQmktCMCShxnpIetOy7Kma91TBIDXl7on4Nq5g2NO4cePYtm2bwiFFBu7HELb/JP2OQWqqp6eHvr6+epcxrI6ODtxd3UwXmDx5Mm1tbaH77q+lrq6umnQCV2tJrmvgDm5hKBikppJwtAD5q5i6urrYe++9611Kwxg9enSou3xFoaWlZdcvnBtJ1upSU5LUVJKaaJJUq0icFAxSU0na2SapVpE4KRikppK0s01SrSJxUjBITSVpZ5uU8yEicVMwSE0laWebpBAT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\n" }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "result.show([fs.Centroid])" ], "metadata": { "collapsed": false, "pycharm": { "name": "#%%\n" } } }, { "cell_type": "code", "execution_count": 5, "outputs": [], "source": [], "metadata": { "collapsed": false, "pycharm": { "name": "#%%\n" } } } ], "metadata": { "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.7.4" } }, "nbformat": 4, "nbformat_minor": 2 }